package com.zhangjingcheng.yunyixia.util;

import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.zhangjingcheng.yunyixia.em.SuffixType;

public class StringUtil {

    /**
     * 获取随机数字组合
     *
     * @param length 字符串长度
     * @return 随机字符串
     */
    public static String getRandomNumbers(Integer length) {
        if (length < 1) {
            throw new IllegalArgumentException("长度必须大于0");
        }
        return RandomUtil.randomNumbers(length);
    }

    /**
     * 获取随机字符串
     *
     * @param length 随机字符串长度
     * @return 随机字符串
     */
    public static String getRandomString(Integer length) {
        if (length < 1) {
            throw new IllegalArgumentException("长度必须大于0");
        }
        return RandomUtil.randomString(length);
    }

    /**
     * MD5加密
     *
     * @param str 待加密字符串
     * @return 加密后的字符串
     */
    public static String encodeByMD5(String str) {
        return DigestUtil.md5Hex(str);
    }

    /**
     * 从完整的文件名中提取并格式化后缀。
     *
     * @param name 文件名，例如 "MyDocument.docx" 或 "archive.tar.gz"。
     * @return 返回带点或不带点的小写后缀 (例如 ".docx", ".gz")。
     *         如果文件名没有后缀、为null或为空，则返回空字符串 ""。
     */
    public static String getSuffix(String name,String  type) {
        if (name == null || name.isEmpty()) {
            return "";
        }
        int lastDotIndex;
        if (type.equals(SuffixType.NO_POINT.name())){
            lastDotIndex = name.lastIndexOf("." + 1);
        }else {
            // 查找最后一个点的位置
            lastDotIndex = name.lastIndexOf(".");
        }

        // 如果没有点，或者点是最后一个字符（如 "file."），则认为没有有效后缀
        if (lastDotIndex == -1 || lastDotIndex == name.length() - 1) {
            return "";
        }
        // 截取从最后一个点开始的子字符串，并转换为小写
        return name.substring(lastDotIndex).toLowerCase();
    }

}
